CODE 136. Word Break

版权声明:本文为博主原创文章,转载请注明出处,谢谢!

版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2013/11/23/2013-11-23-CODE 136 Word Break/

访问原文「CODE 136. Word Break

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = "leetcode",
dict = ["leet", "code"].
Return true because "leetcode" can be segmented as "leet code".

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public boolean wordBreak(String s, Set<String> dict) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if (null == s || "".equals(s) || dict.contains(s)) {
return true;
}
Set<String> unused = new HashSet<String>();
boolean touched = false;
Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
for (String sub : dict) {
if (!s.contains(sub)) {
unused.add(sub);
}
}
dict.removeAll(unused);
for (int i = 0; i < s.length(); i++) {
for (String sub : dict) {
String subTmp = s.substring(i);
int start = i;
while (subTmp.contains(sub)) {
int index = subTmp.indexOf(sub);
if (map.containsKey(start + index)) {
map.get(start + index)
.add(start + index + sub.length());
} else {
map.put(start + index, new HashSet<Integer>());
map.get(start + index)
.add(start + index + sub.length());
}
subTmp = subTmp.substring(index + sub.length());
start = start + index + sub.length();
if (start >= s.length()) {
touched = true;
}
}
}
}
if (!touched) {
return false;
}
return wreak(s.length(), map, 0);
}
public boolean wreak(int length, Map<Integer, Set<Integer>> map, int x) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if (!map.containsKey(x)) {
return false;
}
for (int index : map.get(x)) {
if (index >= length) {
return true;
}
boolean result = wreak(length, map, index);
if (result) {
return true;
}
}
return false;
}
Jerky Lu wechat
欢迎加入微信公众号